﻿using UnityEngine;
using System.Collections;

public class Player_Animation : MonoBehaviour {
	
	private Player_Movement playerMovement;
	private float input;
	private bool movingForward;
	
	void Start()
	{
		playerMovement = GameObject.FindGameObjectWithTag(Tags.player).GetComponent<Player_Movement>();
	}
	
	void LateUpdate()
	{
		DetectInput();
	}
	
	/// <summary>
	/// Detecta qual tecla esta sendo pressionada para flipar o persenagem ou nao.
	/// </summary>
	private void DetectInput()
	{
		
		if (playerMovement.EnumGravity == Enum_Gravity.LEFT)
		{	
			GetComponent<SpriteSheet>().canAnimate = true;
			
			input = Input.GetAxis("Vertical");
			
			//Se estiver andando para frente, mas a imagem estiver andando para tras.
			if (input > 0 && !movingForward)
			{
				Flip();
				movingForward = true;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			//Se estiver andando para tras, mas a imagem estiver andando para frente.
			else if (input < 0 && movingForward)
			{
				Flip();
				movingForward = false;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			else if (input == 0) GetComponent<SpriteSheet>().canAnimate = false;
		}
		
		else if (playerMovement.EnumGravity == Enum_Gravity.RIGHT)
		{	
			GetComponent<SpriteSheet>().canAnimate = true;
			
			input = Input.GetAxis("Vertical");
			
			//Se estiver andando para frente, mas a imagem estiver andando para tras.
			if (input < 0 && !movingForward)
			{
				Flip();
				movingForward = true;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			//Se estiver andando para tras, mas a imagem estiver andando para frente.
			else if (input > 0 && movingForward)
			{
				Flip();
				movingForward = false;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			else if (input == 0) GetComponent<SpriteSheet>().canAnimate = false;
		}
		
		else if (playerMovement.EnumGravity == Enum_Gravity.UP)
		{
			GetComponent<SpriteSheet>().canAnimate = true;
			
			input = Input.GetAxis("Horizontal");
			
			//Se estiver andando para frente, mas a imagem estiver andando para tras.
			if (input > 0 && !movingForward)
			{
				Flip();
				movingForward = true;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			//Se estiver andando para tras, mas a imagem estiver andando para frente.
			else if (input < 0 && movingForward)
			{
				Flip();
				movingForward = false;
				GetComponent<SpriteSheet>().canAnimate = true;
			}	
			
			else if (input == 0) GetComponent<SpriteSheet>().canAnimate = false;
		}
		
		else if (playerMovement.EnumGravity == Enum_Gravity.DOWN)
		{
			input = Input.GetAxis("Horizontal");
			
			//Se estiver andando para frente, mas a imagem estiver andando para tras.
			if (input < 0 && !movingForward)
			{
				Flip();
				movingForward = true;
				GetComponent<SpriteSheet>().canAnimate = true;
			}
			
			//Se estiver andando para tras, mas a imagem estiver andando para frente.
			else if (input > 0 && movingForward)
			{
				Flip();
				movingForward = false;
				GetComponent<SpriteSheet>().canAnimate = true;
			}	
			
			else if (input == 0) GetComponent<SpriteSheet>().canAnimate = false;
		}
	}
	
	private void Flip()
	{
		transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
	}
}
